// MCP透明化完整演示
const { ChatManager } = require('../dist/core/chat.js');
const { ToolManager } = require('../dist/tools/index.js');

async function mcpTransparentDemo() {
    console.log('=== 🎯 MCP透明化完整演示 ===\n');
    
    // 创建工具管理器和聊天管理器
    const toolManager = new ToolManager();
    const chatManager = new ChatManager(toolManager);
    
    console.log('📋 步骤1: 显示初始工具状态');
    console.log('AI可见工具:');
    toolManager.getAllTools().forEach(tool => {
        console.log(`  ✅ ${tool.name}`);
    });
    console.log(`总计: ${toolManager.getAllTools().length} 个工具\n`);
    
    // 在后台连接MCP服务器
    console.log('🔗 步骤2: 后台连接MCP服务器（对AI透明）');
    try {
        const connected = await chatManager.connectMCPServer(
            'demo-server',
            'node index.js',
            'E:\\mcp_server\\mcp_server\\out'
        );
        
        if (connected) {
            console.log('✅ MCP服务器已连接，远程工具已注入系统提示词\n');
            
            // 显示更新后的系统提示词状态
            console.log('📝 步骤3: 系统提示词更新结果');
            const systemPrompt = chatManager.getSystemPrompt();
            const mcpToolsCount = (systemPrompt.match(/🌐/g) || []).length;
            console.log(`📊 统计: 系统提示词现在包含 ${mcpToolsCount} 个MCP远程工具`);
            console.log('🎯 AI现在可以直接调用远程工具，无需了解MCP细节\n');
            
            // 模拟AI工具调用
            console.log('🤖 步骤4: 模拟AI透明调用远程工具');
            console.log('假设AI想要列出目录结构...');
            
            try {
                const result = await toolManager.executeTool('demo-server::list-directory-tree', {
                    dir: 'src',
                    maxDepth: 2
                });
                
                console.log('✅ AI成功调用远程工具！');
                console.log('📤 结果摘要:', result.substring(0, 150) + '...\n');
                
                // 再次模拟调用
                console.log('🤖 再次模拟AI调用远程工具');
                console.log('假设AI想要读取文件...');
                
                const result2 = await toolManager.executeTool('demo-server::read-lines', {
                    path: 'package.json',
                    from: 1,
                    to: 5
                });
                
                console.log('✅ AI再次成功调用远程工具！');
                console.log('📤 结果摘要:', result2.substring(0, 150) + '...\n');
                
            } catch (error) {
                console.log('❌ 远程工具调用失败:', error.message);
            }
            
            // 清理演示
            console.log('🧹 步骤5: 清理演示环境');
            await chatManager.disconnectMCPServer('demo-server');
            console.log('✅ MCP连接已断开\n');
            
        } else {
            console.log('❌ MCP服务器连接失败\n');
        }
        
    } catch (error) {
        console.log('❌ MCP连接失败:', error.message, '\n');
    }
    
    console.log('🎉 MCP透明化演示完成！\n');
    
    console.log('💡 关键特性总结:');
    console.log('  🔒 MCP客户端对AI完全隐藏');
    console.log('  🔄 远程工具自动注入系统提示词');
    console.log('  🎯 AI可直接调用远程工具（server::tool格式）');
    console.log('  ⚡ 连接管理在后台自动处理');
    console.log('  🔧 支持动态添加/移除远程工具');
    console.log('  📝 系统提示词实时更新');
    
    console.log('\n🎯 实际使用示例:');
    console.log('AI可以这样调用远程工具:');
    console.log('```tool_call');
    console.log('{');
    console.log('  "tool_name": "file-server::read-lines",');
    console.log('  "arguments": {');
    console.log('    "path": "config.json",');
    console.log('    "from": 1,');
    console.log('    "to": 10');
    console.log('  }');
    console.log('}');
    console.log('```');
    console.log('\n✨ MCP现在对AI完全透明！');
}

mcpTransparentDemo().catch(console.error);
